package com.ecommerce.product;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TestProductSystem {
    public static void main(String[] args) {
        try {
            // 1. 创建商品对象（包含异常测试场景）
            List<Product> productList = new ArrayList<>();

            // 正常电子产品
            ElectronicProduct phone = new ElectronicProduct(
                    "E001", "智能手机", 3999.99,
                    "6.7英寸全面屏，5000mAh电池", "XX品牌", 12
            );
            // 正常服装
            ClothingProduct shirt = new ClothingProduct(
                    "C001", "纯棉衬衫", 199.9,
                    "透气舒适，适合春秋季穿着", "M", "100%棉"
            );
            //正常图书
            BookProduct javaBook = new BookProduct(
                    "B001", "Java编程入门", 59.8,
                    "零基础学习Java开发，适合初学者",
                    "张三", "编程出版社", "978-7-123-45678-9"
            );
            // 异常测试：价格为负（触发InvalidPriceException）
            try {
                ElectronicProduct invalidProduct = new ElectronicProduct(
                        "E002", "平板电脑", -1999.0,
                        "10.2英寸屏幕，支持触控笔", "YY品牌", 8
                );
            } catch (InvalidPriceException e) {
                System.out.println("异常捕获成功：" + e.getMessage() + "\n");
            }

            // 2. 将正常商品加入列表
            productList.add(phone);
            productList.add(shirt);
            productList.add(javaBook);

            // 3. 存储商品到文件（调用FileUtil）
            FileUtil.saveProducts(productList);
            System.out.println("商品已成功存储到文件！\n");

            // 4. 从文件读取商品并展示
            List<Product> readProducts = FileUtil.readProducts();
            System.out.println("从文件读取的商品信息：");
            for (Product p : readProducts) {
                System.out.println("------------------------");
                System.out.println(p.showBasicInfo()); // 调用重写后的展示方法
                // 调用子类特有方法
                if (p instanceof ElectronicProduct) {
                    System.out.println(((ElectronicProduct) p).showWarranty());
                }
                if (p instanceof ClothingProduct) {
                    System.out.println(((ClothingProduct) p).recommendMatch());
                }
                if (p instanceof BookProduct) {
                    System.out.println(((BookProduct) p).showCategory());
                }
            }

        } catch (InvalidPriceException | IOException e) {
            e.printStackTrace();
        }
    }
}